package com.hcc.gateway.netty.support;

import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.util.CharsetUtil;

/**
 * ByteBufUtils
 *
 * @author shengjun.hu
 * @date 2021/12/27
 */
public class ByteBufUtils {

    private ByteBufUtils() {}

    public static ByteBuf writeStringToByteBuf(String str) {
        if (str == null) {
            return null;
        }
        byte[] bytes = str.getBytes(CharsetUtil.UTF_8);
        return Unpooled.wrappedBuffer(bytes);
    }

    public static ByteBuf writeByteToByteBuf(byte[] bytes) {
        if (bytes == null) {
            return null;
        }
        return Unpooled.wrappedBuffer(bytes);
    }

    public static String readStringFromByteBuf(ByteBuf byteBuf) {
        if (byteBuf == null) {
            return null;
        }
        return byteBuf.toString(CharsetUtil.UTF_8);
    }

    public static byte[] readByteFromByteBuf(ByteBuf byteBuf) {
        if (byteBuf == null) {
            return null;
        }
        if (byteBuf.hasArray()) {
            return byteBuf.array();
        }
        byte[] bytes = new byte[byteBuf.readableBytes()];
        byteBuf.readBytes(bytes, 0, byteBuf.capacity());

        return bytes;
    }

}
